#ifndef _USART_H
#define _USART_H
#include "sys.h"
#include "stdio.h"	
#include "usbd_def.h"
#include "stm32f7xx.h"                  // Device header
//////////////////////////////////////////////////////////////////////////////////	 
//本程序只供学习使用，未经作者许可，不得用于其它任何用途
//ALIENTEK STM32F7开发板
//串口1初始化		   
//正点原子@ALIENTEK
//技术论坛:www.openedv.csom
//修改日期:2015/6/23
//版本：V1.0
//版权所有，盗版必究。
//Copyright(C) 正点原子 2009-2019
//All rights reserved
//********************************************************************************
//V1.0修改说明 
////////////////////////////////////////////////////////////////////////////////// 	
#define Debug_Mode 		1
#define Normal_Mode 	0

extern u16 crc16_data;
extern u8  Working_Mode;

#define USART_REC_LEN  			200  	//定义最大接收字节数 200
#define EN_USART1_RX 			1		//使能（1）/禁止（0）串口1接收
	  	
extern u8  USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符 
extern u16 USART_RX_STA;         		//接收状态标记	
extern UART_HandleTypeDef UART1_Handler; //UART句柄

#define RXBUFFERSIZE   1 //缓存大小
extern u8 aRxBuffer[RXBUFFERSIZE];//HAL库USART接收Buffer

//如果想串口中断接收，请不要注释以下宏定义

u16 crc16(u8 *addr, u16 num, u16 crc);
void uart1_init(u32 bound);
void HAL_UART_MspInit(UART_HandleTypeDef *huart);

void STM2PC_ERROR(USBD_HandleTypeDef *pdev,uint8_t  ep_addr,u8 State,u8 CMD,u8 ERROR_CODE,u8 Other_data);
void STM2PC(USBD_HandleTypeDef *pdev,uint8_t  ep_addr, u8 table[],u16 length);
void STM2PC_LCDConfig(USBD_HandleTypeDef *pdev,uint8_t  ep_addr,u8 CMD,u8 table[],u8 ERROR_CODE);
void STM2PC_SW_Version(USBD_HandleTypeDef *pdev,uint8_t  ep_addr,u8 State,u8 CMD,u8 ERROR_CODE,u8 Version,u8 SubVersion,u8 ID);
void STM2PC_Pattern(USBD_HandleTypeDef *pdev,uint8_t  ep_addr,u8 CMD,u8 R,u8 G,u8 B,u8 ERROR_CODE);
void STM2PC_FilConfig(USBD_HandleTypeDef *pdev,uint8_t  ep_addr,u8 State,u8 CMD,u8 table[],u16 num ,u8 ERROR_CODE);
void STM2PC_SSD2828(USBD_HandleTypeDef *pdev,uint8_t  ep_addr,u8 table[],u8 length);
void Mode_Display(void);

#endif
